ProdutosIntegraçõesRecursosDocumentaçãoPreços
Começar agora

© 2026 CapSolver. All rights reserved.

Contacte-nos

Slack: lola@capsolver.com

Produtos

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Extensão de Navegador
  • Mais tipos de CAPTCHA

Integrações

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Parceiros
  • Ver todas as integrações

Recursos

  • Programa de Referenciação
  • Documentação
  • Referência da API
  • Blog
  • FAQ
  • Glossário
  • Estado

Legal

  • Termos de Serviço
  • Política de Privacidade
  • Política de Reembolso
  • Não vender os meus dados pessoais
Blog/The other captcha/O que é Puppeteer e como usar na raspagem de dados | Guia Completo 2024
Jul10, 2024

O que é Puppeteer e como usar na raspagem de dados | Guia Completo 2024

Adélia Cruz

Adélia Cruz

Neural Network Developer

A raspagem de dados tornou-se uma habilidade crucial para qualquer pessoa que lida com extração de dados da web. Se você é um desenvolvedor, cientista de dados ou entusiasta procurando reunir informações de sites, o Puppeteer é uma das ferramentas mais poderosas à sua disposição. Este guia completo irá explorar o que é o Puppeteer e como utilizá-lo efetivamente na raspagem de dados da web.

Introdução ao Puppeteer

O Puppeteer é uma biblioteca Node que fornece uma API de alto nível para controlar o Chrome ou o Chromium através do Protocolo DevTools. É mantido pela equipe do Google Chrome e oferece aos desenvolvedores a capacidade de realizar uma variedade de tarefas do navegador, como gerar capturas de tela, raspar websites e, mais importante, fazer raspagem de dados da web. O Puppeteer é altamente popular devido às suas capacidades de navegação sem interface gráfica, o que o torna ideal para tarefas automatizadas.

Lutando com falhas repetidas na resolução completa do irritante captcha? Descubra a resolução automática e sem problemas de captchas com a tecnologia AI-powered Auto Web Unblock do CapSolver!

Reivindique seu Código de Bônus para as principais soluções de captcha; CapSolver: WEBS. Depois de resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitado.

Por que usar o Puppeteer para raspagem de dados?

Axios e Cheerio são ótimas escolhas para raspagem de dados em JavaScript, mas têm limitações: lidar com conteúdo dinâmico e contornar mecanismos anti-raspagem.

Como um navegador sem cabeça, o Puppeteer se destaca na raspagem de conteúdo dinâmico. Ele carrega completamente a página-alvo, executa JavaScript e pode até mesmo disparar solicitações XHR para recuperar dados adicionais. Isso é algo que raspadores estáticos não conseguem alcançar, especialmente com Aplicações de Página Única (SPAs) onde o HTML inicial não contém dados significativos.

O que mais o Puppeteer pode fazer? Ele pode renderizar imagens, capturar screenshots e tem uma extensão para resolver vários captchas como reCAPTCHA, captcha, captcha. Por exemplo, você pode programar seu script para navegar por uma página, tirar screenshots em intervalos específicos e analisar essas imagens para obter insights competitivos. As possibilidades são praticamente ilimitadas!

Uso Simples do Puppeteer

Nós já completamos a primeira parte do ScrapingClub usando Selenium e Python. Agora, vamos usar o Puppeteer para completar a segunda parte.

Antes de começarmos, certifique-se de ter o Puppeteer instalado em sua máquina local. Se ainda não tiver, você pode instalá-lo usando os seguintes comandos:

bash Copy
npm i puppeteer # Faz o download do Chrome compatível durante a instalação.
npm i puppeteer-core # Alternativamente, instala como uma biblioteca, sem fazer o download do Chrome.

Acessando uma Página da Web

javascript Copy
const puppeteer = require('puppeteer');

(async function() {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    await page.goto('https://scrapingclub.com/exercise/detail_json/');

    // Pausa por 5 segundos
    await new Promise(r => setTimeout(r, 5000));
    await browser.close();
})();

O método puppeteer.launch é usado para iniciar uma nova instância do Puppeteer e pode aceitar um objeto de configuração com várias opções. O mais comum é headless, que especifica se o navegador deve ser executado no modo sem cabeça. Se você não especificar este parâmetro, ele será padrão para true. Outras opções comuns de configuração são as seguintes:

Parâmetro Tipo Valor Padrão Descrição Exemplo
args string[] Array de argumentos da linha de comando para passar ao iniciar o navegador args: ['--no-sandbox', '--disable-setuid-sandbox']
debuggingPort number Especifica a porta de depuração a ser usada debuggingPort: 8888
defaultViewport dict {width: 800, height: 600} Define o tamanho padrão da viewport defaultViewport: {width: 1920, height: 1080}
devtools boolean false Se deve abrir automaticamente o DevTools devtools: true
executablePath string Especifica o caminho para o executável do navegador executablePath: '/path/to/chrome'
headless boolean ou 'shell' true Se deve executar o navegador no modo sem cabeça headless: false
userDataDir string Especifica o caminho para o diretório de dados do usuário userDataDir: '/path/to/user/data'
timeout number 30000 Tempo limite em milissegundos para aguardar o navegador iniciar timeout: 60000
ignoreHTTPSErrors boolean false Se deve ignorar erros HTTPS ignoreHTTPSErrors: true

Configurando o Tamanho da Janela

Para obter a melhor experiência de navegação, precisamos ajustar dois parâmetros: o tamanho da viewport e o tamanho da janela do navegador. O código é o seguinte:

javascript Copy
const puppeteer = require('puppeteer');

(async function() {
    const browser = await puppeteer.launch({
        headless: false,
        args: ['--window-size=1920,1080']
    });
    const page = await browser.newPage();
    await page.setViewport({width: 1920, height: 1080});
    await page.goto('https://scrapingclub.com/exercise/detail_json/');

    // Pausa por 5 segundos
    await new Promise(r => setTimeout(r, 5000));
    await browser.close();
})();

Extraindo Dados

No Puppeteer, existem vários métodos para extrair dados.

  1. Usando o Método evaluate

    O método evaluate executa código JavaScript no contexto do navegador para extrair os dados necessários.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const data = await page.evaluate(() => {
            const image = document.querySelector('.card-img-top').src;
            const title = document.querySelector('.card-title').innerText;
            const price = document.querySelector('.card-price').innerText;
            const description = document.querySelector('.card-description').innerText;
            return {image, title, price, description};
        });
    
        console.log('Nome do produto:', data.title);
        console.log('Preço do produto:', data.price);
        console.log('Imagem do produto:', data.image);
        console.log('Descrição do produto:', data.description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  2. Usando o Método $eval

    O método $eval seleciona um único elemento e extrai seu conteúdo.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const title = await page.$eval('.card-title', el => el.innerText);
        const price = await page.$eval('.card-price', el => el.innerText);
        const image = await page.$eval('.card-img-top', el => el.src);
        const description = await page.$eval('.card-description', el => el.innerText);
    
        console.log('Nome do produto:', title);
        console.log('Preço do produto:', price);
        console.log('Imagem do produto:', image);
        console.log('Descrição do produto:', description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  3. Usando o Método $$eval

    O método $$eval seleciona vários elementos de uma vez e extrai seus conteúdos.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const data = await page.$$eval('.my-8.w-full.rounded.border > *', elements => {
            const image = elements[0].querySelector('img').src;
            const title = elements[1].querySelector('.card-title').innerText;
            const price = elements[1].querySelector('.card-price').innerText;
            const description = elements[1].querySelector('.card-description').innerText;
            return {image, title, price, description};
        });
    
        console.log('Nome do produto:', data.title);
        console.log('Preço do produto:', data.price);
        console.log('Imagem do produto:', data.image);
        console.log('Descrição do produto:', data.description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  4. Usando os Métodos page.$ e evaluate

    O método page.$ seleciona elementos e o método evaluate executa código JavaScript no contexto do navegador para extrair dados.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const imageElement = await page.$('.card-img-top');
        const titleElement = await page.$('.card-title');
        const priceElement = await page.$('.card-price');
        const descriptionElement = await page.$('.card-description');
        const image = await page.evaluate(el => el.src, imageElement);
        const title = await page.evaluate(el => el.innerText, titleElement);
        const price = await page.evaluate(el => el.innerText, priceElement);
        const description = await page.evaluate(el => el.innerText, descriptionElement);
    
        console.log('Nome do produto:', title);
        console.log('Preço do produto:', price);
        console.log('Imagem do produto:', image);
        console.log('Descrição do produto:', description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();

Contornando Proteções Anti-Raspagem

Completar os exercícios do ScrapingClub é relativamente simples. No entanto, em cenários reais de raspagem de dados, obter informações nem sempre é tão fácil. Alguns sites utilizam tecnologias anti-raspagem que podem detectar seu script como um bot e bloqueá-lo. A situação mais comum envolve desafios CAPTCHA, como captcha, captcha, recaptcha, captcha e captcha.

Para resolver esses desafios CAPTCHA, é necessário ter experiência extensiva em aprendizado de máquina, engenharia reversa e contramedidas de impressão digital do navegador, o que pode consumir uma quantidade significativa de tempo.

Felizmente, você não precisa mais lidar com todo esse trabalho sozinho. O CapSolver oferece uma solução abrangente que ajuda você a resolver facilmente todos os desafios. O CapSolver oferece uma extensão para navegador que permite resolver automaticamente desafios CAPTCHA enquanto usa o Puppeteer para raspagem de dados. Além disso, ele fornece um método de API para resolver CAPTCHAs e obter tokens. Tudo isso pode ser feito em apenas alguns segundos. Confira este documento para descobrir como resolver os vários desafios CAPTCHA que você encontrar!

Conclusão

A raspagem de dados é uma habilidade inestimável para qualquer pessoa envolvida na extração de dados da web e o Puppeteer, como uma ferramenta com uma API avançada e recursos poderosos, é uma das melhores escolhas para alcançar esse objetivo. Sua capacidade de lidar com conteúdo dinâmico e resolver mecanismos anti-raspagem o destaca entre as ferramentas de raspagem disponíveis.

Neste guia, exploramos o que é o Puppeteer, suas vantagens na raspagem de dados da web e como configurá-lo e utilizá-lo de forma eficaz. Demonstramos com exemplos como acessar páginas da web, configurar tamanhos de viewport e extrair dados usando diversos métodos. Além disso, discutimos os desafios impostos por tecnologias anti-raspagem e como o CapSolver oferece uma solução poderosa para o desafio CAPTCHA.

Ver mais

The other captchaApr 03, 2026

Como lidar com os bloqueios de raspagem da web: métodos práticos que funcionam

Aprenda como lidar efetivamente com os bloqueios de scraping na web. Descubra métodos práticos, insights técnicos sobre detecção de bots e soluções confiáveis para extração de dados.

Ethan Collins
Ethan Collins
The other captchaApr 03, 2026

Tempo de Resposta da API de Resolução de CAPTCHA Explicado: Fatores de Velocidade e Desempenho

Entenda o tempo de resposta da API de resolução de CAPTCHA, seu impacto na automação e os principais fatores que afetam a velocidade. Aprenda como otimizar o desempenho e aproveitar soluções eficientes como a CapSolver para resolução rápida de CAPTCHA.

Índice

Emma Foster
Emma Foster
The other captchaApr 02, 2026

O que é uma API de resolução de CAPTCHA? Como Funciona e Quando Usá-la

Aprenda o que é uma API de resolução de CAPTCHA, como ela funciona e quando usá-la para automação. Descubra os benefícios da resolução de CAPTCHA com inteligência artificial para raspagem de dados.

Sora Fujimoto
Sora Fujimoto
The other captchaFeb 27, 2026

Dominando os Desafios do CAPTCHA no Scraping de Dados de Empregos (Guia de 2026)

Um guia abrangente para compreender e superar o desafio CAPTCHA na raspagem de dados de vagas. Aprenda a lidar com o reCAPTCHA e outros obstáculos com nossas dicas especializadas e exemplos de código.

Anh Tuan
Anh Tuan